
const http = require('http');
const fs = require('fs');
const path = require('path');

let server = http.createServer((req, res) => {
    // 专门针对 http://127.0.0.1:3001/getHeroSkin 请求来进行处理
    // 限制此请求一定是get方式访问，post是访问不到的
    // 请求路径：/getHeroSkin
    // console.log(req.url);  // /getHeroSkin?heroName=%E5%90%8E%E7%BE%BF
    // 将req.url通过?这个特殊字符将实际的请求路径和参数分离开来
    let urlArr = req.url.split('?');
    let pathurl = urlArr[0];
    let querystring = urlArr[1];
    // console.log('pathurl==>' + pathurl);
    // console.log('querystring==>' + querystring); // heroName=后羿
    // 请求判断
    if (req.method === 'GET' && pathurl === '/getHeroSkin') {
        //将英雄数据响应回去
        // 读取data.json中的数据以json的格式响应给客户端
        let heroString = fs.readFileSync(path.join(__dirname, 'data.json'), 'utf8');
        // 告诉客户端当前响应回来的数据是一个json格式
        res.setHeader('content-type', 'application/json;charset=utf8');
        // 设置响应头中的cors跨域允许
        // Access-Control-Allow-Origin:* 表示所有的请求源都可以通过跨域的方式请求此数据接口
        res.setHeader('Access-Control-Allow-Origin', "*");

        // 有参数就过滤出数据再响应
        if (querystring) {
            // 过滤出heroString中的符合条件的英雄数据
            let heroArr = JSON.parse(heroString);
            // 获取到参数值
            // querystring  ->heroName=后羿
            let heroName = querystring.split('=')[1]; // %s%sdsdf
            // console.log();
            heroName = decodeURI(heroName); // 后羿
            // 通过filter方法过滤出想要的数据即可
            let newArr = heroArr.filter(item => item.cname == heroName);
            //由于newArr是一个数组,所以需要转成json字符串才能想要回去
            res.end(JSON.stringify(newArr));
        } else {
            // 将全部英雄皮肤数据响应
            res.end(heroString);
        }
    }
})

server.listen(3001, () => {
    console.log('英雄皮肤数据服务器启动:3001');
})